#ifndef _OBJPARSER__H_
#define _OBJPARSER__H_

#include <GL/gl.h>

#define INFINITO 200.0f

/* Ponto ou vetor de tres coordenadas */
struct Vetor3
{
	GLfloat x, y, z;
};

/* Equacao de um plano */
struct Plano
{
    GLfloat a,b,c,d;
};

/* Faceta triangular */
struct Face
{
	int indicesVertices[3];     /* Indice de cada vertice desta faceta que compoe um triangulo */
	struct Vetor3 normais[3];   /* Normais de cada vertice */
    struct Plano equacaoPlano;  /* Equacao do plano que contem este triangulo */
    int indicesVizinhos[3];     /* Indice de cada face vizinha */
    bool visivel;               /* determina se faceta eh visivel pela luz */
};

/* Objeto: conjunto de facetas triangulares */
struct Objeto3D
{
    int nVertices;
    struct Vetor3 *vertices;

    int nFaces;
    struct Face *faces;
};
    
extern struct Objeto3D lerObjeto3D(FILE *arquivo);
extern void killObjeto3D(struct Objeto3D objeto3D);

extern struct Vetor3 desenhaObjeto3D(struct Objeto3D objeto3D);
extern void desenhaSombra(struct Objeto3D objeto3D, float *posicaoLuz);

#endif

